/*
 * 
 */
package mx.unam.acatlan.poo.practica2;

/**
 * Pila
 * 
 * Especificación de la interfaz pública de una pila. Una pila es una
 * estructura de datos de almacenamiento tipo "Last In, First Out". El tipo de
 * los elementos de la pila es Object, para poder almacenar en ella objetos de
 * cualquier clase.
 * 
 * @author Carlos Alegría Galicia
 */
public interface Pila {

	/**
	 * Si la pila no se encuentra llema, inserta <code>elemento</code> en la 
	 * cabeza de la pila. En caso contrario, la pila no es modificada.
	 * 
	 * @param elemento El elemento que será insertado en la cabeza de la pila.
	 */
	public void push(Object elemento);
	
	/**
	 * Extrae el elemento que se encuentra en la cabeza de la pila.
	 * 
	 * @return El elemento de la cabeza de la pila, o null si la pila está
	 *         vacía.
	 */
	public Object pop();
	
	/**
	 * Obtiene el número de elementos que contiene la pila.
	 * 
	 * @return El número de elementos que contiene la pila.
	 */
	public int getTamaño();
	
	/**
	 * Obtiene el número máximo de elementos que puede almacenar esta pila.
	 * 
	 * @return El número máximo de elementos que puede almacenar esta pila.
	 */
	public int getCapacidad();
}
